Aufgabe 1: IPv4 Pakete
1.1 Die typische Größe eines IPv4-Paketheaders beträgt 20 Bytes.
1.2 Das IPv4-Headerfeld "Protocol" gibt an, welches Transportprotokoll im Datenbereich des IP-Pakets verwendet wird. Es identifiziert den Typ des nächsten Headers im IP-Paket, z. B. TCP (6), UDP (17) oder ICMP (1).
1.3 Das "TTL" (Time to Live)-Headerfeld wird verwendet, um die maximale Lebensdauer eines IP-Pakets anzugeben. Es wird bei jedem Router, den das Paket passiert, um eins reduziert. Wenn das TTL-Feld den Wert 0 erreicht, wird das Paket verworfen.
1.4 Die maximale Größe eines IPv4-Pakets beträgt 65.535 Bytes, wobei 20 Bytes für den Header reserviert sind. Dies ergibt eine maximale Nutzlastgröße von 65.515 Bytes.
1.5 Das Checksummen-Feld im IPv4-Header wird verwendet, um die Integrität des IP-Headers zu überprüfen. Es enthält eine Prüfsumme, die auf Basis der Headerdaten berechnet wird. Der Empfänger verwendet die Checksumme, um Fehler im Header zu erkennen.

Aufgabe 2: IPv6 Pakete
2.1 Die typische Größe eines IPv6-Paketheaders beträgt 40 Bytes.
2.2 Bei IPv6 dienen "Extension"-Header dazu, zusätzliche Informationen über das IP-Paket bereitzustellen. Sie können verwendet werden, um Optionen, Routing-Informationen oder Fragmentierungsinformationen zu übermitteln. Extension-Header werden nacheinander an den IPv6-Header angehängt und ermöglichen eine flexible Erweiterung der IP-Funktionalität.
2.3 Bei IPv6 wurden die folgenden Felder im Vergleich zu IPv4 weggelassen:

    Header Length: Da der IPv6-Header eine feste Länge von 40 Bytes hat, ist dieses Feld nicht mehr erforderlich.
    Checksum: Die Prüfsumme wurde entfernt, da die Integritätsprüfung auf der darunterliegenden Schicht (z. B. Ethernet) durchgeführt wird.
    Fragmentation Flags: IPv6 setzt auf den Endsystemen auf eine "Path MTU Discovery" und verzichtet daher auf die Fragmentierung von Paketen während des Routertransits.
    2.4 Das IPv6-Headerfeld, das die Aufgaben des "TTL"-Feldes des IPv4-Headers übernimmt, heißt "Hop Limit". Es funktioniert ähnlich wie das TTL-Feld und wird bei jedem Router, den das Paket passiert, um eins reduziert.

Aufgabe 3: Layer 4: TCP und UDP
3.1 TCP: Transmission Control Protocol
UDP: User Datagram Protocol
3.2 Die Hauptaufgabe von TCP im Vergleich zu UDP besteht darin, eine zuverlässige, verbindungsorientierte Kommunikation zwischen Endpunkten herzustellen. TCP bietet eine verlässliche Übertragung von Daten, Flusssteuerung, Congestion Control und Mechanismen zur Gewährleistung der Integrität und Reihenfolge der übertragenen Daten. Im Gegensatz dazu bietet UDP eine unzuverlässige, verbindungslose Kommunikation ohne Mechanismen zur Fehlererkennung, Fehlerkorrektur oder Flusssteuerung. Es ist effizienter und eignet sich gut für Anwendungen, die geringe Latenz und geringen Overhead benötigen.
3.3 Beispiele für Anwendungsprotokolle, die TCP verwenden, sind:

    HTTP (Hypertext Transfer Protocol)
    FTP (File Transfer Protocol)
    SMTP (Simple Mail Transfer Protocol)
    SSH (Secure Shell)
    Beispiele für Anwendungsprotokolle, die UDP verwenden, sind:
    DNS (Domain Name System)
    DHCP (Dynamic Host Configuration Protocol)
    SNMP (Simple Network Management Protocol)
    TFTP (Trivial File Transfer Protocol)
    3.4 TCP: Verbindungsaufbau, Flusssteuerung, Sequenznummer, Window, SYN, Segment
    UDP: Datagramm, Zielport, Prüfsumme
    3.5 Die typischen Portnummern und das L4-Protokoll für die folgenden Anwendungsprotokolle sind:
    HTTP: Port 80 (TCP)
    SSH: Port 22 (TCP)
    Telnet: Port 23 (TCP)
    FTP: Port 21 (TCP)
    HTTPS: Port 443 (TCP)
    SMTP: Port 25 (TCP)
    IMAP4: Port 143 (TCP)
    POP3: Port 110 (TCP)
    DNS: Port 53 (UDP/TCP)
    3.6 - Well Known Ports: Nummern von 0 bis 1023, die bestimmten Diensten und Protokollen zugewiesen sind (z. B. Port 80 für HTTP).
    - Registered Ports: Nummern von 1024 bis 49151, die von spezifischen Anwendungen oder Protokollen registriert werden können.
    - Dynamically Allocated Ports: Nummern von 49152 bis 65535, die für temporäre Verbindungen verwendet werden, z. B. für Client-Anwendungen.

3.7 Die Felder eines UDP-Headers sind:

    Quellport: Die Portnummer des sendenden Prozesses.
    Zielport: Die Portnummer des empfangenden Prozesses.
    Länge: Die Gesamtlänge des UDP-Datagramms (Header + Daten).
    Prüfsumme: Eine optionale Prüfsumme, die zur Integritätsprüfung des UDP-Headers und der Daten verwendet werden kann.

3.8 UDP wird oft als unzuverlässig bezeichnet, da es keinen Mechanismus zur Fehlererkennung, Fehlerkorrektur, Flusssteuerung oder Bestätigung der Zustellung bietet. Es bietet eine einfache, verbindungslose Kommunikation ohne Garantien für die Integrität oder Reihenfolge der übertragenen Daten.

3.9 Unter Linux/Windows kann man mithilfe von Netzwerküberwachungstools wie Wireshark oder netstat herausfinden, welche Ports von Programmen gerade benutzt werden. Diese Tools zeigen die aktiven Netzwerkverbindungen und die zugehörigen Portnummern an.

3.10 Das Sliding-Window ist ein Mechanismus, der in TCP zur Flusssteuerung verwendet wird. Es ermöglicht es dem Sender, mehrere Datenpakete in einem bestimmten Zeitraum an den Empfänger zu senden, bevor eine Bestätigung (ACK) vom Empfänger empfangen wird. Das Sliding-Window ermöglicht eine effiziente Nutzung der verfügbaren Bandbreite und passt sich den Netzwerkbedingungen an, um eine optimale Übertragungsgeschwindigkeit zu erreichen.

Aufgabe 4: MTU
4.1 Bei IPv4-Paketen bezieht sich der Begriff "Fragmentierung" auf den Prozess der Aufteilung eines IP-Pakets in kleinere Fragmente, um sie über Netzwerke mit einer kleineren maximalen Übertragungseinheit (MTU) zu senden. Die Fragmentierung findet beim Sender statt und die Fragmente werden beim Empfänger wieder zusammengesetzt. Bei IPv6 findet die Fragmentierung normalerweise nicht auf Routerebene statt, sondern wird den Endsystemen überlassen.

4.2 MTU steht für "Maximum Transmission Unit" und bezieht sich auf die maximale Größe eines Datenpakets, das über ein bestimmtes Netzwerkmedium in einem einzigen Frame oder einer Übertragungseinheit gesendet werden kann, ohne fragmentiert zu werden. Die MTU hängt vom verwendeten Netzwerkmedium ab und wird normalerweise in Bytes angegeben.

4.3 Die typische MTU von Ethernet-Frames beträgt 1500 Bytes. Dies ist die maximale Größe der Nutzdaten, die in einem Ethernet-Paket transportiert werden können, ohne dass eine Fragmentierung erforderlich ist.

4.4 Der Begriff "Path-MTU" bezieht sich auf die maximale MTU entlang des Pfades (der Reihe von Netzwerken und Routern), über den ein Paket von einem Sender zu einem Empfänger übertragen wird. Bei IPv6 wird die Path-MTU normalerweise durch den Mechanismus der "Path MTU Discovery" ermittelt. Hierbei werden ICMPv6-Nachrichten verwendet, um den Pfad zu analysieren und die effektive MTU zu ermitteln.

4.5 Um die maximale Nutzlastgröße eines UDP-Datagramms zu berechnen, das über IPv4 über die Ethernet-Standard-MTU von 1500 Bytes ohne Fragmentierung transportiert werden soll, subtrahiert man von der MTU die Größe des IPv4-Headers (20 Bytes) und des UDP-Headers (8 Bytes). Die maximale Nutzlastgröße beträgt also 1472 Bytes (1500 - 20 - 8).

Aufgabe 6: Gerätekonfiguration
6.1 Die 4 grundlegenden Informationen, die bei der IPv4-Netzwerkkonfiguration eines PCs bereitgestellt werden müssen, sind:

    IP-Adresse: Die eindeutige Adresse, die dem PC im Netzwerk zugewiesen wird.
    Subnetzmaske: Bestimmt den IP-Adressbereich des lokalen Netzwerks.
    Gateway-Adresse: Die IP-Adresse des Routers, der als Standardgateway für den Zugriff auf andere Netzwerke fungiert.
    DNS-Server: Die IP-Adresse des DNS-Servers, der für die Namensauflösung verwendet wird.

6.2 Netzwerkeinstellungen können auf einem PC auf zwei Arten vorgenommen werden:

    Manuelle Konfiguration: Der Benutzer gibt die IP-Adresse, Subnetzmaske, Gateway-Adresse und DNS-Server manuell in den Netzwerkeinstellungen des PCs ein.
    Dynamische Konfiguration: Der PC verwendet das DHCP-Protokoll, um automatisch eine IP-Adresse, Subnetzmaske, Gateway-Adresse und DNS-Server vom DHCP-Server im Netzwerk zu erhalten.

6.3 DHCP steht für "Dynamic Host Configuration Protocol" und ermöglicht die automatische Zuweisung von Netzwerkkonfigurationseinstellungen an Geräte in einem Netzwerk. Es basiert auf dem DORA-Prinzip, das die folgenden Schritte umfasst:

    Discovery: Der Client sendet eine DHCP-Discover-Nachricht, um einen DHCP-Server im Netzwerk zu finden.
    Offer: Der DHCP-Server antwortet mit einer DHCP-Offer-Nachricht und bietet dem Client eine IP-Adresse, Subnetzmaske, Gateway-Adresse und andere Konfigurationsoptionen an.
    Request: Der Client sendet eine DHCP-Request-Nachricht, um das Angebot des Servers anzunehmen.
    Acknowledge: Der DHCP-Server bestätigt das Angebot, indem er dem Client eine DHCP-Ack-Nachricht sendet und die angeforderten Konfigurationseinstellungen bereitstellt.

6.4 SLAAC steht für "Stateless Address Autoconfiguration" und ist ein Mechanismus bei IPv6, der es Endgeräten ermöglicht, automatisch ihre IPv6-Adresse zu konfigurieren. Dabei wird die MAC-Adresse des Netzwerkadapters des Geräts verwendet, um eine eindeutige IPv6-Adresse zu generieren. SLAAC erfordert keine zentrale Konfiguration oder Verwaltung eines DHCP-Servers.

6.5 Bei IPv6 gibt es "stateful" und "stateless" DHCPv6:

    Stateful DHCPv6: Ähnlich wie bei IPv4 kann ein DHCPv6-Server IP-Adressen, Subnetzmasken, Gateway-Adressen und andere Konfigurationseinstellungen an Clients vergeben. Der DHCPv6-Server speichert den Zustand der zugewiesenen Adressen und stellt sicher, dass Clients immer die gleiche Adresse erhalten.
    Stateless DHCPv6: Bei SLAAC generieren die Clients ihre IPv6-Adressen automatisch. Stateless DHCPv6 wird verwendet, um zusätzliche Konfigurationsoptionen wie DNS-Server oder NTP-Server anzugeben, ohne dass der Server den Zustand der Adresszuweisung speichert.

Aufgabe 7: ICMP
7.1 Drei Aufgaben von ICMP (Internet Control Message Protocol) sind:

    Fehlererkennung und -berichterstattung: ICMP ermöglicht es, Fehlerzustände und Probleme im IP-Netzwerk zu erkennen und entsprechende Fehlermeldungen an den Absender zu senden.
    Netzwerktopologie- und Routererkennung: ICMP-Nachrichten wie "Echo Request" und "Echo Reply" (Ping) können verwendet werden, um die Erreichbarkeit von Hosts im Netzwerk zu überprüfen und die Latenzzeit zu messen.
    Pfad-MTU-Discovery: ICMP wird verwendet, um die maximale Übertragungseinheit (MTU) auf dem Pfad zwischen Sender und Empfänger zu ermitteln und Fragmentierung zu vermeiden.

7.2 Zwei Funktionen von ICMPv6, die es bei ICMPv4 nicht gibt, sind:

    Neighbor Discovery: ICMPv6 ersetzt ARP (Address Resolution Protocol) in IPv4 durch Neighbor Discovery, um die Zuordnung von IPv6-Adressen zu Link-Layer-Adressen zu ermöglichen.
    Router Advertisement: ICMPv6 enthält Router Advertisement-Nachrichten, die es IPv6-Hosts ermöglichen, die Präsenz von Routern im Netzwerk zu erkennen und automatisch Netzwerkkonfigurationseinstellungen wie IP-Adresse und Gateway zu erhalten.

7.3 ICMP wird dem OSI-Layer 3, dem Netzwerklayer, zugeordnet.

7.4 Zwei Anwendungsprogramme, die ICMP nutzen, sind:

    Ping: Ein Programm, das ICMP Echo Request- und Echo Reply-Nachrichten verwendet, um die Erreichbarkeit und Latenzzeit eines Hosts im Netzwerk zu überprüfen.
    Traceroute: Ein Programm, das ICMP Time Exceeded-Nachrichten verwendet, um den Pfad zu einem bestimmten Host im Netzwerk zu verfolgen und die Hops (Router) auf dem Weg anzuzeigen.
